2. Pilas Unapila (stacken ingles) esunalista ordinal o estructura de datos en la que el modo de acceso a suselementoses de tipolifo (del inglésLast In First Out, último en entrar, primero en salir) quepermitealmacenar y recuperardatos. Estaestructura se aplica en multitud de ocasiones en el área de informaticadebidoa susimplicidad y ordenaciónimplícita de la propiaestructura. Para el manejo de los datos se cuenta con dos operacionesbásicas: apilar (push), quecoloca un objeto en la pila, y suoperacióninversa, retirar (o desapilar, pop), queretira el últimoelementoapilado. En cadamomentosólo se tieneacceso a la parte superior de la pila, esdecir, al últimoobjetoapilado (denominado TOS, Top of Stack en inglés). La operaciónretirarpermite la obtención de esteelemento, queesretirado de la pilapermitiendo el acceso al siguiente (apilado con anterioridad), quepasa a ser el nuevo TOS. Poranalogía con objetoscotidianos, unaoperaciónapilarequivaldría a colocar un platosobreunapila de platos, y unaoperaciónretirar a retirarlo.
3. Operaciones Crear: se crea la pilavacía. Apilar: se añade un elemento a la pila.(push) Desapilar: se elimina el elemento frontal de la pila.(pop) Cima:devuelve el elementoqueesta en la cima de la pila. (top o peek) Vacía:devuelveciertosi la pilaestávacía o falso en casocontrario.
4. Estructura de datosrelacionadas El tipo base de la estructura FIFO (el primero en entrares el primero en salir)es la cola, y la combinación de lasoperaciones de la pila y la cola esproporcionadopor el deque. Porejemplo, el cambio de unapila en una cola en un algoritmo de búsquedapuedecambiar el algoritmo de búsqueda en primeraprofundidad (en inglés, DFS) porunabúsqueda en amplitud (en inglés, BFS). Unapilaacotadaesunapilalimitada a un tamañomáximoimpuesto en suespecificación.
5. Listas Unalistaenlazadaesuna de lasestructuras de datosfundamentales, y puedeserusadaparaimplementarotrasestructuras de datos. Consiste en unasecuenciade nodosen los que se guardancampos de datosarbitrarios y una o dos referencias(punteros) al nodo anterior o posterior. El principal beneficio de laslistasenlazadasrespecto a los array convencionalesesque el orden de los elementosenlazadospuedeserdiferente al orden de almacenamiento en la memoria o el disco, permitiendoque el orden de recorrido de la lista sea diferente al de almacenamiento. Unalistaenlazadaes un tipo de dato auto-referenciadoporquecontienen un puntero o link a otrodato del mismotipo. Las listasenlazadaspermiteninserciones y eliminación de nodos en cualquierpunto de la lista en tiempoconstante (suponiendoquedichopuntoestápreviamenteidentificado o localizado), pero no permitenun accesoaleatorio. Existendiferentestipos de listasenlazadas: ListaEnlazadas Simples, ListasDoblementeEnlazadas, ListasEnlazadasCirculares y ListasEnlazadasDoblementeCirculares.
6. recordNode { data // El dato almacenado en el nodonext// Una referencia al nodo siguiente, nulo para el último nodo recordList { NodePrimerNodo// Apunta al primer nodo de la list node := list.PrimerNodowhile node not null { node := node.nexta; nulo para la lista vacía
7. Listasvs. vectores o matrices Las listasenlazadasposeenmuchasventajassobrelos arrays. Los elementos se puedeninsertar en unalistaindefinidamentemientrasque un array tarde o temprano se llenaráónecesitaráserredimensionado, unacostosaoperaciónqueinclusopuede no serposiblesi la memoria se encuentrafragmentada. En algunoscasos se puedenlograrahorros de memoriaalmacenando la misma ‘cola’ de elementos entre dos o máslistas – esdecir, la listaacaba en la mismasecuencia de elementos. De estemodo, unopuedeañadirnuevoselementos al frente de la listamanteniendounareferenciatanto al nuevocomo a los viejoselementos - un ejemplo simple de unaestructura de datospersistente. Porotra parte, los arrays permitenaccesoaleatoriomientrasquelaslistasenlazadassólopermitenaccesosecuencial a los elementos. Las listasenlazadas simples, de hecho, solo puedenserrecorridas en unadirección. Estohacequelaslistasseaninadecuadasparaaquelloscasos en los queesútilbuscar un elementosporsuíndicerápidamente, como el heapsort. El accesosecuencial en los arrays tambiénesmásrápidoque en laslistasenlazadas.
8. Estructura de datosrelacionadas Tantolaspilascomolascolas son a menudo implementadasusandolistasenlazadas, y simplementerestringiendo el tipo de operacionesque son soportadas. La skip list, o listaporsaltos, esunalistaenlazadaaumentada con capas de punterosparasaltosrápidossobregrandesnúmeros de elementos, y descendiendohacía la siguientecapa. Este procesocontinúa hasta llegar a la capa inferior, la cuales la lista actual. Un arbolbinariopuedeservistocomo un tipo de listaenlazadadonde los elementosestánenlazados entre ellosmismos de la misma forma. El resultadoesquecadanodopuedeincluirunareferencia al primer nodo de una o dos listasenlazadas, cadacual con sucontenido, formandoasí los subárbolesbajo el nodo. Unalistaenlazadadesenrolladaesunalistaenlazadacuyosnodoscontiene un array de datos. Estomejora la ejecución de la caché, siemprequelaslistas de elementosesténcontiguas en memoria, y reducen la sobrecarga de la memoria, porquenecesitasmenosmetadatosparaguardarcadaelemento de la lista. Unatabla hash puedeusarlistasenlazadasparaguardarcadenas de ítems en la mismaposición de la tablatabla hash.
9. Colas Unacolaesunaestructura de datos, caracterizadaporserunasecuencia de elementos en la que la operación de inserciónpush se realizapor un extremo y la operación de extracciónpoppor el otro. También se le llama estructura FIFO (del inglésFirst In First Out), debido a que el primer elemento en entrarserátambién el primero en salir. Las colas se utilizan en sistemasinformaticos, transportesy operacionesde investigacion (entre otros), dónde los objetos, personas o eventos son tomadoscomodatosque se almacenan y se guardanmediante colas parasu posterior procesamiento. Este tipo de estructura de datosabstracta se implementaen lenguajesorioentados a objetosmedianteclases, en forma de listasenlazadas.
10. Operaciones Crear: se crea la cola vacía. Encolar (añadir, entrar, push): se añade un elemento a la cola. Se añade al final de esta. Desencolar (sacar, salir, pop): se elimina el elemento frontal de la cola, esdecir, el primer elementoqueentró. Frente (consultar, front): se devuelve el elemento frontal de la cola, esdecir, el primeroelementoqueentró.
11. Usos de la colas La particularidad de unaestructura de datos de cola es el hecho de quesólopodemosacceder al primer y al últimoelemento de la estructura. Asímismo, los elementossólo se puedeneliminarpor el principio y sólo se puedenañadirpor el final de la cola. Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperandoparaentrar a ver un partido de béisbol, esperando en el cine paraverunapelícula, unapequeñapeluquería, etc. La idea esencialesque son todoslíneas de espera. En estoscasos, el primer elemento de la listarealizasufunción (pagar comida, pagarentradapara el partido o para el cine) y deja la cola. Este movimientoestárepresentado en la cola por la función pop o desencolar. Cadavezqueotroelemento se añade a la lista de espera se añaden al final de la cola representando la funciónpush o encolar. Hay otrasfuncionesauxiliaresparaver el tamaño de la cola (size), paraversiestávacía en el caso de que no hayanadieesperando (empty) o paraver el primer elemento de la cola (front).